home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Devices & Hardware / A⁄ROSE 1.2 / Forwarder / fwd.h next >
Encoding:
C/C++ Source or Header  |  1993-06-10  |  5.0 KB  |  141 lines  |  [TEXT/MPS ]

  1. /****************************************************************************/
  2. /*                                                                            */
  3. /*                fwd.h -  ADSP forwarder.                                    */
  4. /*                                                                            */
  5. /*                        Richard W. Mincher.        08/20/87                    */
  6. /*                                                                            */
  7. /*            Copyright © 1987-88,  Apple Computer, Inc.  All rights reserved.*/
  8. /*                                                                            */
  9. /****************************************************************************/
  10. /*    Misc. Constants                */
  11.  
  12. #include    "os.h"
  13.  
  14. #define    DATA_QUEUE            2200
  15. #define    DATA_BUFFER            2100
  16. #define    ECHO_DELTA            30        /*    Number of seconds between ECHO's    */
  17.  
  18. /*    Message Codes                */
  19.  
  20. #define    MC_OPENSERVER        0x1000        /*    Open Server                */
  21. #define    MC_CLOSESERVER        0x1002        /*    Close Server            */
  22. #define    MC_CLOSECONNECT        0x1004        /*    Connection Failed        */
  23. #define    MC_READDATA            0x1006        /*    read data (svr->task)    */
  24. #define    MC_SENDDATA            0x1008        /*    write data(task->svr)    */
  25. #define    MC_HITHERE            0x100A        /*    Identify Forwarder        */
  26. #define    MC_WHOAREYOU        0x2000        /*    Who Are You?            */
  27. #define    MC_ECHO                0x2002        /*    Echo back test            */
  28.  
  29. /*    Error messages                */
  30.  
  31. #define    FWE_NoError            0x0000    /*    No error                            */
  32. #define    FWE_DupServer        0x0001    /*    Duplicate Server                    */
  33. #define    FWE_CreateServer    0x0002    /*    Coundn't Create Server Block        */
  34. #define    FWE_NoServer        0x0003    /*    No error                            */
  35. #define    FWE_State            0x0004    /*    No error                            */
  36. #define    FWE_Write            0x0005    /*    No error                            */
  37. #define    FWE_NoConnect        0x0006    /*    No error                            */
  38. #define    FWE_Overflow        0x0007    /*    No error                            */
  39. #define    FWE_NoSMemory        0x0008    /*    No error                            */
  40. #define    FWE_NoSListen        0x0009    /*    No error                            */
  41. #define    FWE_NoRegister        0x000A    /*    No error                            */
  42.  
  43. /*    Connection Status bits        */
  44.  
  45. #define    CST_Read        0x0001        /*    Read pending                        */
  46. #define    CST_Write        0x0002        /*    Write pending                        */
  47. #define    CST_Closing        0x2000        /*    Notify Pending                        */
  48. #define    CST_Notify        0x4000        /*    Notify Pending                        */
  49. #define    CST_Memory        0x8000        /*    Memory complete                        */
  50.  
  51. /*    Connection States        */
  52.  
  53.  
  54. /*    Server Status bits        */
  55.  
  56. #define    SST_Memory    0x8000            /*    Memory complete                        */
  57. #define    SST_Closing    0x4000            /*    Close Pending                        */
  58.  
  59.  
  60. /*    Server States            */
  61.  
  62. #define    SSTATE_Init        0x0000        /*    Initial state                        */
  63. #define    SSTATE_Create    0x0001        /*    listener CCB creating                */
  64. #define    SSTATE_Register    0x0002        /*    Listener registering                */
  65. #define    SSTATE_Listen    0x0003        /*    Listener listening                    */
  66. #define    SSTATE_NoListen    0x0004        /*    Listener canceling                    */
  67. #define    SSTATE_Unresist    0x0005        /*    Unregistering                        */
  68.  
  69. /*    Server Structure        */
  70.  
  71. typedef    struct    Server
  72. {
  73.     struct    Server    *next;            /*    Next Server                            */
  74.     NBPparms        *nPBPtr;        /*    NBP parameter block pointer            */
  75.     NamesTableEntry    *nte;            /*    Names Table Entry                    */
  76.     DSPPBPtr        sPBPtr;            /*    Server Param Block pointer            */
  77.     TPCCB            lcb;            /*    Listener Control Block Pointer        */
  78.     DSPPBPtr        lPBPtr;            /*    Listener Param Block Pointer        */
  79.     struct    Connect    *connPtr;        /*    Connection pointer                    */
  80.     long            timer;            /*    Watchdog timer value                */
  81.     short            lRefNum;        /*    Listener Reference Number            */
  82.     tid_type        tid;            /*    Process ID                            */
  83.     short            status;            /*    Server Status                        */
  84.     short            state;            /*    Server State                        */
  85.     short            socket;            /*    Socket ID                            */
  86.     struct mMessage    *msg;            /*    Mr.Dos Message                        */
  87.     Boolean            disconnect;        /*  Disconnect flag                        */
  88. } Server, *ServerPtr;
  89.  
  90. /*    Connection Structure        */
  91.  
  92. typedef    struct    Connect
  93. {
  94.     struct    Connect    *next;                /*    Next Connection                    */
  95.     struct    Server    *serv;                /*    Server Pointer                    */
  96.     DSPPBPtr        cPBPtr;                /*    Connection Param Block Pointer    */
  97.     TPCCB            ccb;                /*    Connection Control Block Pointer*/
  98.     DSPPBPtr        rPBPtr;                /*    Read Param Block Pointer        */
  99.     DSPPBPtr        wPBPtr;                /*    Write Param Block Pointer        */
  100.     struct mMessage    *wMsg;                /*    Write message reply                */
  101.     char            *sendQ;                /*    Send Queue                        */
  102.     char            *recvQ;                /*    Receive Queue                    */
  103.     char            *attnQ;                /*    Attention Queue                    */
  104.     char            *readBuf;            /*    Read buffer                        */
  105.     char            *sendBuf;            /*    Send buffer                        */
  106.     short            cRefNum;            /*    CCB reference number            */
  107.     short            status;                /*    Connection Status                */
  108.     short            state;                /*    Connection State                */
  109. } Connect, *ConnectPtr;
  110.  
  111. /*    Appletalk Transition queue element    */
  112.  
  113. typedef struct
  114.     {
  115.     long        fQLink;                /* For the queue */
  116.     short        fQType;                /* Why not? */
  117.     long        fCallAddr;            /* Function Pointer for us */
  118.     }
  119. ATalkQEntry;
  120.  
  121. /*    Global Data Structure        */
  122.  
  123. typedef    struct    GlobalData
  124. {
  125.     ServerPtr        svrList;        /*    Server List                            */
  126.     ServerPtr        FreeSrvr;        /*    Free Server                            */
  127.     ConnectPtr        FreeConn;        /*    Free Server                            */
  128.     short            QFlag;            /*    Queue flag                            */
  129.     short            dspRef;            /*    DSP Reference Number                */
  130.     char            SysTask;        /*    AccRun Flag                            */
  131.     char            ScanFlag;        /*    AccRun Flag                            */
  132.     short            MaxFreeSvr;        /*    Maximum number of free servers        */
  133.     short            MaxFreeCnn;        /*    Maximum number of free connections    */
  134.     struct mMessage    *MRDOSmsgs;        /*    MR-DOS messages from completion rtn    */
  135.     char            workFlag;        /*    Non-zero if work to do                */
  136.     char            ATClosed;        /*    Non-zero if at has been closed        */
  137.     ATalkQEntry        atQE;            /*    AT Queue Entry                        */
  138. } GlobalData, *GlobalDataPtr;
  139.  
  140. #define TRUE 0xff
  141. #define FALSE 0x00